package cn.lkk.samples.lang.fundamental.InputAndOutput;

import java.io.*;
import java.nio.file.Paths;
import java.util.Scanner;

/**
 * Created by lkk on 2015/5/13.
 */
public class FileInputAndOutput {
    public static void main(String[] args) throws IOException {
        fileWrite();
        fileRead();
        stringRead();
    }

    /**
     * 使用Scanner从文件读取数据
     */
    public static void fileRead() throws IOException {
        // 1.使用Path对象新建一个Scanner
        Scanner in = new Scanner(Paths.get("myfile.txt"));
        // 2.然后使用Scanner的方法读取数据
        String name = in.nextLine();
        int age = in.nextInt();

        System.out.println(name + " " + age);
    }

    /**
     * 使用Scanner从一个字符串中读取数据
     */
    public static void stringRead() {
        // 和上一例不同之处在于，Scanner的构造函数使用的是字符串，这个字符串将会被视为数据，而不是文件路径
        Scanner in = new Scanner("Dan 15");
        String name = in.next();
        int age = in.nextInt();

        System.out.println(name + " " + age);
    }

    /**
     * 使用PrintWriter写入到文件中
     */
    public static void fileWrite() throws FileNotFoundException {
        // 1.使用文件路径创建PrintWriter对象
        PrintWriter out = new PrintWriter("myfile.txt");
        // 2.调用相关的api，这些api与System.out类似
        out.println("Shaoqian Lv");
        out.print(25);

        // 3.需要调用该函数将缓存数据写入到文件中
        out.flush();
    }
}
